The present invention relates in general to communications, and more particularly to a communication system having a protocol timer.
Time division multiple access (TDMA) communication systems share a common transmission medium between a number of simultaneous users. Each user""s transmission does not interfere with that of the other users because their transmissions are separated from each other in time. A requirement of an effective TDMA communications device, such as a cellular telephone, is that the device retain accurate time synchronization with respect to the other users. Base stations in a GSM cellular phone system may not be synchronized with each other. When a mobile handset moves from one base station""s coverage area to another, the handset must be re-synchronized with the new base station""s time base. The transition must be handled in a timely manner to prevent a loss of information.
Some prior art techniques for retaining accurate time synchronization rely on a combination of software and hardware. These techniques suffer from timing errors and inhibit effective power management of the system. The timing errors result from errors introduced by software interaction with hardware, such as for example, interrupt latencies that delay software response to boundary conditions in the hardware when the call processor is called upon to direct all timing functions as well as call processing. Also, uncertainties may be introduced when hardware counters are modified by software. Correcting these errors requires increased software complexity. In addition, power consumption may be higher than desirable because the system""s central processing unit (CPU) must remain in an active state to execute the software component of the timing. Moreover, there are some real-time constraints on the CPU which conflict with interrupt requests handled by the CPU. A large number of high-priority interrupts are undesirable and present complexity and reliability issues to the required software.
Other techniques have been suggested, such as in Ser. No. 09/061,958 filed Apr. 17, 1998 where the timing functions of the call processor are removed to separate hardware, a protocol timer, to relieve the call processor of some of its timing duties. The separate hardware contains an event generator containing preprogrammed timing instructions for each frame or superframe that can be triggered by the call processor, but then left alone to perform timing functions in the handset autonomously. This method, although an improvement in the art, still requires some call processor interaction to correct an offset timing when the handset loses synchronization with the base station or moves between cells. Typically, changing the offset timing requires shutting down the event generator, changing the offset, then restarting the event generator to be ready for the start of the next frame. However, the event generator can not be shut down if it is executing commands. Therefore the call processor must determine when the event generator will be idle.
The call processor can determine when the event generator is not executing commands by using either a polling loop or an interrupt service routine to check the event generator instructions to find an idle time. The polling loop technique ties up valuable call processor time with repeated reads of the event generator. In addition, there is a chance that the update time may be missed if the call processor is asked to perform a higher level task at that time. Interrupt servicing requires the call processor to insert an interrupt command into the event generator during a normally idle time. Then event generator must respond to this interrupt. Not only does this include call processor interaction with the event generator this introduces active management issues with the event generator and increased software operability.
Therefore, the need exists for an apparatus and method to control and update timing functions in a communication device while reducing the intensive timing interaction typically required from the main (call) processor. Additionally, it would prove beneficial to update timing during a frame without shutting down the event generator. It would also beneficial to implement such an improvement with relatively simple hardware and software.